IF exists(SELECT * FROM dbo.sysobjects WHERE name='sec_magDossierZien' AND xtype='FN') 
BEGIN
	DROP FUNCTION sec_magDossierZien
END
GO

CREATE   function sec_magDossierZien(
@logon varchar(50),
@inschrijvingsNr char(7))
returns bit
begin
-- Basisveranderlijken en initialisatie
declare @OK bit
declare @llnKlas varchar(5)
declare @naamcode char(4)
set @OK=0

/****************** Vooraf:  **********************/
--   1. Bepaal de klas van de leerling

select @llnKlas = klas 
from leerlingen..leerlingen
where inschrijvingsNr = @inschrijvingsNr

--   2. Bepaal de naamcode van de logon,
--      Ofwel is de logon opgenomen in de alias-lijst,
--	Ofwel bestaat de logon uit 4 tekens en is dus een kandidaat-naamcode
--	Anders is de LOGON null.

select @naamcode = naamcode
from sec_alias
where logon = @logon

if (@naamcode is null) 
  begin 
    if len(@logon) = 4 set @naamcode = @logon
  end

/****************** Verwerven van rechten **************/

-- Is de persoon interimaris? Zo ja, controleer dan de 
-- rechten voor elke titularis. De lijst van al deze naamcodes
-- is een lijst #titularissen

declare @titularissen table
(naamcode char(4))

insert into @titularissen(naamcode)
select wieVervangen from leraars..interim as i
where i.naamcode = @naamcode

insert into @titularissen(naamcode)
select @naamcode

declare deCursor cursor local for 
  select naamcode from @titularissen 
for read only

-- Geeft de persoon les aan de betrokken leerling (op basis van de klas)?

open deCursor
fetch next from deCursor into @naamcode
while (@@fetch_status=0)
begin
  if (@llnKlas in
	(select klas from leraars..ambtsVerdeling
	where naamcode = @naamcode))
  set @OK = 1
  fetch next from deCursor into @naamcode
end
close deCursor
deallocate deCursor

-- Geeft de persoon les aan de betrokken leerling (op basis van de seminariegroep)?
if exists 
(select l.naamcode from  leerlingen..seminariegroepen as g
left join leraars..seminarieLeraars as l
  on g.groepscode = l.groepscode
where inschrijvingsNr = @inschrijvingsNr and naamcode = @naamcode) set @OK = 1

-- Is de persoon opgenomen in de lijst extraRechten?
if (@llnKlas in
	(select a.klas 
	from sec_extraRechten as s
		left join (select distinct klas 
			from leraars..ambtsVerdeling
			union
			select 'weg') as a
		on (a.klas like klasGroep)
	where s.logon = @logon))
set @OK = 1

-- Is de leraar een remedieringsleraar van betrokken leerling?

if (@inschrijvingsNr in
	(select inschrijvingsNr 
	from celbegeleiding as c
	where c.begeleider = @naamcode))
set @OK = 1


/****************** Weigeringsregels ***************/

-- De persoon erft de weigering van de persoon die hij vervangt
declare deCursor cursor local for 
  select naamcode from @titularissen 
for read only

open deCursor
fetch next from deCursor into @naamcode
while (@@fetch_status=0)
begin
  if (@llnKlas in
	(select a.klas 
	from sec_geweigerdeRechten as s
		left join (select distinct klas 
			from leraars..ambtsVerdeling) as a
		on (a.klas like s.klasGroep)
	where s.logon = @naamcode))
  set @OK = 0
  fetch next from deCursor into @naamcode
end
close deCursor
deallocate deCursor


-- De logon is expliciet uitgesloten
if (@llnKlas in
	(select a.klas 
	from sec_geweigerdeRechten as s
		left join (select distinct klas 
			from leraars..ambtsVerdeling) as a
		on (a.klas like s.klasGroep)
	where s.logon = @logon))
  set @OK = 0

return @OK
end